package com.tlgen.orm.service.impl;

// ==================== 实体操作接口 ====================
public interface EntityImpl<T> {

    /**
     * 保存前的扩展点
     * @param entity 实体对象
     */
    default void beforeSave(T entity) {
        // 默认空实现
    }

    /**
     * 保存后的扩展点
     * @param entity 实体对象
     */
    default void afterSave(T entity) {
        // 默认空实现
    }

    /**
     * 更新前的扩展点
     * @param entity 实体对象
     */
    default void beforeUpdate(T entity) {
        // 默认空实现
    }

    /**
     * 更新后的扩展点
     * @param entity 实体对象
     */
    default void afterUpdate(T entity) {
        // 默认空实现
    }

    /**
     * 删除前的扩展点
     */
    default void beforeDelete(Object id) {
        // 默认空实现
    }

    /**
     * 删除后的扩展点
     */
    default void afterDelete(Object ig) {
        // 默认空实现
    }

    /**
     * 逻辑删除前的扩展点
     */
    default void beforeLogicalDelete(Object id) {
        // 默认空实现
    }

    /**
     * 逻辑删除后的扩展点
     */
    default void afterLogicalDelete(Object id) {
        // 默认空实现
    }

}